﻿using DbProject;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Runtime.Serialization.Formatters.Binary;
using System.Text;


//namespace MvcEasyProject.Helpers
//{
//    public class Helpers
//    {
//        public static WorkerModel Duplicate(this WorkerModel m)
//        {
//            BinaryFormatter formatter = new BinaryFormatter();
//            MemoryStream str = new MemoryStream();
//            try
//            {
//                formatter.Serialize(str, m);
//            }
//            catch (Exception ex)
//            {
               
//            }
//            str.Position = 0;
//            return formatter.Deserialize(str) as WorkerModel;

//        }
//        public static MortgageCollection Duplicate(this MortgageCollection m)
//        {
//            BinaryFormatter formatter = new BinaryFormatter();
//            MemoryStream str = new MemoryStream();
//            try
//            {
//                formatter.Serialize(str, m);
//            }
//            catch (Exception ex)
//            {
               
//            }
//            str.Position = 0;
//            return formatter.Deserialize(str) as MortgageCollection;
//        }

//        public static byte[] ToStream(this MortgageCollection m)
//        {
//            BinaryFormatter formatter = new BinaryFormatter();
//            MemoryStream str = new MemoryStream();
//            try
//            {
//                formatter.Serialize(str, m);
//            }
//            catch (Exception ex)
//            {
               
//            }
//            return str.ToArray();
//        }

//        public static MortgageCollection MortgageCollectionFromStream(this byte[] m)
//        {
//            BinaryFormatter formatter = new BinaryFormatter();

//            try
//            {
//                MemoryStream str = new MemoryStream(m);
//                str.Position = 0;
//                return formatter.Deserialize(str) as MortgageCollection;
//            }
//            catch (Exception ex)
//            {
//                logWriter.Log(ex);
//                return new MortgageCollection();
//            }
//            return null;

//        }

//        public static Dictionary<string, Tuple<Type, string>> getTypesOf<T>(Func<object, string> nameGen)
//        {
//            Dictionary<string, Tuple<Type, string>> ret = new Dictionary<string, Tuple<Type, string>>();

//            AppDomain.CurrentDomain.GetAssemblies().ToList().ForEach((a) =>
//            {
//                try
//                {

//                    var res = a.GetTypes().Where(t => t != typeof(T) && t.BaseType == typeof(T)).ToList();

//                    foreach (var typ in res)
//                    {
//                        string name = nameGen.Invoke(Activator.CreateInstance(typ));
//                        ret.Add(typ.FullName, new Tuple<Type, string>(typ, name));
//                    }

//                }
//                catch (Exception ex)
//                {
//                    logWriter.Log(ex);
//                }
//            });

//            return ret;
//        }
//    }
//}

